﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ToaThuoc_PAK
{
    public partial class ToaThuoc : System.Web.UI.Page
    {
        private int _PositionRow;
        private DAL_DonThuoc dal_DonThuoc;
        private DAL_Khoa dal_Khoa;
        private DAL_BenhNhan dal_BenhNhan;
        private DAL_PhieuKham dal_PhieuKham;
        private DAL_VienPhi dal_VienPhi;
        private Thuoc Thuoc;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["mand"] == null)
            {
                Response.Redirect("DangNhap.aspx");
                return;
            }

            dal_DonThuoc = new DAL_DonThuoc();
            dal_Khoa = new DAL_Khoa();
            dal_PhieuKham = new DAL_PhieuKham();
            dal_VienPhi = new DAL_VienPhi();
            dal_BenhNhan = new DAL_BenhNhan();
            Thuoc = new Thuoc();
            if (!string.IsNullOrEmpty(Request.QueryString["index"]))
            {
                _PositionRow = int.Parse(Request.QueryString["index"]);
                BindingThongTinBenhNhan();
            }
            string requestXuTri = Request.Form["dsxutri"];

            if (!IsPostBack)
            {
                Initialize();
                AddAttributes();
                napPhacDo();
                //napCachDungThuoc();
                BindingSinhHieu();
                userControlChiDinh.MaNV = Session["mand"].ToString();
            }
            else
            {

            }
        }

        #region Methods

        private void Initialize()
        {
            
            DataTable dt = dal_Khoa.LoadDanhMucKhoa();
            dropNhapVien.DataSource = dt;
            dropNhapVien.DataTextField = "TENKHOA";
            dropNhapVien.DataValueField = "idKHOA";
            dropNhapVien.DataBind();
            tenbs.Text = Session["hoten"].ToString().ToUpper();
            hid_makhoa.Value = Session["makhoa"].ToString();
            hid_tenkhoa.Value = Session["tenkhoa"].ToString();
            txtNgayNhapVien.Text = DateTime.Now.ToString("dd/MM/yyyy");
            txtngayvao.Text = DateTime.Now.ToString("dd/MM/yyyy");
            txtngayra.Text = DateTime.Now.ToString("dd/MM/yyyy");
            hmabs.Value = Session["mand"].ToString();
            ngay.Text = DateTime.Now.ToString();
            tendv.Text = Session["tenkhoa"].ToString();
        }

        private void AddAttributes()
        {
            dsxutri.Attributes.Add("onchange", "dsxutri_onchange();");
            dsphacdo.Attributes.Add("onchange", "LoadDonThuocMau(this.value);");
            trieuchung.Attributes["OnKeyPress"] = "seltext();";
            loidanbs.Attributes["OnKeyPress"] = "seltext();";
            taikham.Attributes["OnKeyPress"] = "seltext();";
            txtChanDoanSoBo.Attributes["OnKeyPress"] = "seltext();";
        }

        private void BindingThongTinBenhNhan()
        {
            if (Session["DSBenhNhanCho"] != null)
            {
                List<DS_ChoKham> lst = Session["DSBenhNhanCho"] as List<DS_ChoKham>;
                DS_ChoKham TTBenhNhanCho = lst[_PositionRow];
                idthu.Value = TTBenhNhanCho.IDCT;
                tenbn.Text = TTBenhNhanCho.HoTen;                
                mabn.Text = TTBenhNhanCho.MaBN;                
                lblLoaiKham.Text = TTBenhNhanCho.LoaiKham;                
                hdfNamSinh.Value = TTBenhNhanCho.NamSinh.ToString();
                tuoi.Text = (DateTime.Now.Year - TTBenhNhanCho.NamSinh).ToString();
                rgioitinh.SelectedValue = TTBenhNhanCho.GioiTinh;
                mapk.Text = TTBenhNhanCho.MaPhieu;
                txtMaKhoa.Text = TTBenhNhanCho.MaKhoa;
                txtSoBHYT.Text = TTBenhNhanCho.SoBHYT;
                hdf_DoiTuongBN.Value = TTBenhNhanCho.DoiTuong;
                hiden_dotkham.Value = TTBenhNhanCho.MaDotKham.Trim();
                if (TTBenhNhanCho.HanBH != DateTime.MinValue)
                    txtHanBHYT.Text = TTBenhNhanCho.HanBH.ToString("dd/MM/yyyy");
                if (TTBenhNhanCho.DoiTuong.Trim() == "BHYT")
                    cnguonthuoc.Checked = true;
                Session["TTBenhNhanCho"] = TTBenhNhanCho;
            }
        }

        private void BindingSinhHieu()
        {
            dal_BenhNhan = new DAL_BenhNhan();
            DataTable dt = dal_BenhNhan.LayThongTinSinhHieu(mabn.Text);
            if (dt.Rows.Count > 0)
            {
                if ((dt.Rows.Count > 0) && (dt.Rows[0]["NgaySH"].ToString()) == DateTime.Now.ToString("dd/MM/yyyy"))
                {
                    mach.Text = dt.Rows[0]["Mach"].ToString();
                    huyetap.Text = dt.Rows[0]["HA"].ToString();
                    string[] s = dt.Rows[0]["HA"].ToString().Split(new char[] { '/' });
                    lblNhietDo.Text = dt.Rows[0]["nhietdo"].ToString();
                    //ngaysinhhieu.Text=ds.Tables[0].Rows[0]["NgaySH"].ToString()+" "+ds.Tables[0].Rows[0]["gioSH"].ToString();
                    nhiptho.Text = dt.Rows[0]["nhiptho"].ToString();
                    double smach = Convert.ToDouble((dt.Rows[0]["Mach"].ToString() == "") ? "0" : dt.Rows[0]["Mach"].ToString());
                    double nhietdo = Convert.ToDouble((dt.Rows[0]["nhietdo"].ToString() == "") ? "0" : dt.Rows[0]["nhietdo"].ToString());
                    double HA1 = Convert.ToDouble((dt.Rows[0]["huyetap1"].ToString() == "") ? "0" : dt.Rows[0]["huyetap1"].ToString());
                    double HA2 = Convert.ToDouble((dt.Rows[0]["huyetap2"].ToString() == "") ? "0" : dt.Rows[0]["huyetap2"].ToString());

                    if (smach < 40 || smach > 120)
                    {
                        mach.ForeColor = Color.Red;
                    }
                    if (HA1 < 75 || HA1 > 95 || HA2 > 140 || HA2 < 100)
                    {
                        huyetap.ForeColor = Color.Red;
                    }
                    if (nhietdo < 36 || nhietdo > 38)
                    {
                        lblNhietDo.ForeColor = Color.Red;
                    }
                }
                else
                {
                    mach.Text = "";
                    huyetap.Text = "";
                    lblNhietDo.Text = "";
                    nhiptho.Text = "";
                    //ngaysinhhieu.Text="";
                }
            }
            else
            {
                mach.Text = "";
                huyetap.Text = "";
                lblNhietDo.Text = "";
                nhiptho.Text = "";
                //ngaysinhhieu.Text="";
            }
        }

        private void LuuKhongXoaDSCho(bool coin)
        {
            //bool daluu = false;
            //if (hKieuLuu.Value == "moi")
            //{
            //    daluu = luuphieukham();
            //    if (daluu == true)
            //    {
            //        tangsomaphieu();
            //        DanhDauDichVuDaKham_kham(idthu.Value);

            //    }
            //}
            //else if (hKieuLuu.Value == "capnhat")
            //{
            //    daluu = capnhatphieukham();
            //    DanhDauDichVuDaKham_kham(idthu.Value);
            //    //DanhDauDS_Chokham(idthu.Value);
            //}
            //if (coin == true) { inphieu(); }
            //if (daluu == true)
            //{
            //    hKieuLuu.Value = "capnhat";
            //    lenhInToa.Text = "<script language=javascript>mocs('" + mapk.Text.Trim() + "','" + idthu.Value + "');</script>";
            //}
            //laythongtinBNTiepNhan();
        }

        private void napPhacDo()
        {
            string tmabs = "";
            string tmakhoa = "KNTQ8";
            if (Session["mand"] != null) { tmabs = Session["mand"].ToString().Trim(); }
            if (Session["makhoa"] != null) { tmakhoa = Session["makhoa"].ToString().Trim(); }
            DataTable dt = dal_DonThuoc.LayDanhSachDonThuocMau(tmakhoa, tmabs);
            dsphacdo.DataSource = dt;
            dsphacdo.DataTextField = "TenPhacDo";
            dsphacdo.DataValueField = "MaPD";
            dsphacdo.DataBind();
            dsphacdo.Items.Add("");
            dsphacdo.SelectedValue = "";
        }

        private void napCachDungThuoc()
        {
            List<string> lst = Thuoc.LayCachDungThuoc();
            List<string> lstDVT = Thuoc.LayDonViDungThuoc();
            Response.Write("\n<script type='text/javascript'>");
            string str = "";
            string strDVT = "";
            foreach (string item in lst)
            {
                str += "'" + item.Trim() + "', ";
            }
            foreach (string item in lstDVT)
            {
                strDVT += "'" + item.Trim() + "', ";
            }
            Response.Write("\n var DMCDThuoc =[" + str.TrimEnd(',', ' ') + "]");
            Response.Write("\n var DVThuoc =[" + strDVT.TrimEnd(',', ' ') + "]");
            Response.Write("\n</script>");
        }

        private void inphieuChuyenkhoa()
        {
            lenhInToa.Text = "\n<script language=javascript type=text/javascript>" +
                "\n <!-- " +
                "\n  cuaPhieuchuyenkhoa('" + mapk.Text.Trim() + "','" + mabn.Text.Trim() + "','" + drkhamchuyenkhoa.SelectedValue.Trim() + "');" +
                "\n //-->" +
                "\n </script>";
        }

        private void inphieu()
        {
            lenhInToa.Text = "\n<script language=javascript>" +
                "\n <!-- " +
                "\n  cuaSoInToa('" + mapk.Text.Trim() + "');" +
                "\n //-->" +
                "\n </script>";
        }

        private bool KiemTraDaKeToa()
        {
            bool daketoa = false;
            string soDongToaThuoc = Request.Form["hsodong"];
            int i = Convert.ToInt32(soDongToaThuoc);
            for (int j = 1; j <= i; j++)
            {
                string tenthuoc = "";
                try
                {
                    tenthuoc = Request.Form.Get("tenthuoc" + j.ToString()).Trim();
                }
                catch { }
                if (tenthuoc != "" && tenthuoc != null)
                {
                    daketoa = true;
                    break;
                }
            }
            if ((dsxutri.SelectedValue == "nhapvien") || (dsxutri.SelectedValue == "henthuthuat") || (dsxutri.SelectedValue == "gioithieu") || (dsxutri.SelectedValue == "chove") || (dsxutri.SelectedValue == "bokham"))
                daketoa = true;
            return daketoa;
        }

        private string NguonBenhNhan()
        {
            if (mabn.Text.IndexOf("BNPK") >= 0)
            {
                return "0";
            }
            else
            {
                return "1";
            }
        }

        private bool CapNhatPhieuKham()
        {
            if (mapk.Text.Trim() == "" || mabn.Text.Trim() == "")
            {
                return false;
            }


            //DAL.CSo_PhieuKham_DAL oSo_PhieuKham_DAL = new ToaThuoc.DAL.CSo_PhieuKham_DAL();
            //090528 Thịnh  đưa vào tranc trong SP
            int nDoiTuong = 2;
            try
            {
                nDoiTuong = Convert.ToInt32(dal_BenhNhan.getLoaiBN(mabn.Text.Trim()));
            }
            catch
            {
                nDoiTuong = 2;
            }

            So_PhieuKham oSoPhieuKham = new So_PhieuKham();


            string temphoan = hiden_dotkham.Value;

            bool returnvalue = false;

            string dmyngay = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

            string sgioitinh = "";
            sgioitinh = rgioitinh.SelectedIndex.ToString();
            if (sgioitinh == "") { sgioitinh = "null"; }

            string tnamsinh = "";
            try { tnamsinh = (DateTime.Today.Year - Convert.ToInt32(tuoi.Text)).ToString(); }
            catch { }

            string ngaytaikham = "null";

            if (txtNgay.Text != "")
                ngaytaikham = "" + txtNgay.Text.Trim() + " " + ((txtGio.Text != "") ? txtGio.Text : "0") + ":" + ((txtPhut.Text != "") ? txtPhut.Text : "0") + "";

            txtdake.Text = "";
            string dake = ((KiemTraDaKeToa()) ? "1" : "0");
            txtdake.Text = dake;

            if ((dsxutri.SelectedValue == "0") && (dake == "1")) { dsxutri.SelectedValue = "ketoa"; }

            string loaikham = ((txtloai_kham_CP.Text.Trim() != "") ? txtloai_kham_CP.Text.Trim() : "khamchinh");

            string xutri = dsxutri.SelectedValue;


            // kiểm tra xem đã có chưa để cập nhật hay thêm mới phiếu khám
            if (dal_PhieuKham.checkMaPhieuKhamExists(mapk.Text.Trim()))
            {
                if (hKieuLuu.Value != "capnhat")
                {
                    return false;
                }
            }

            //Nếu là chuyển khoa thì gọi riêng phần chuyển khoa mà không tạo sổ phiếu khám
            if (xutri == "chuyenkhoa")
            {
                dal_VienPhi.ChuyenKhoa(drkhamchuyenkhoa.SelectedValue, Convert.ToInt32(idthu.Value));
                return false;
            }
            else
            {

                #region get form values to So_PhieuKham


                oSoPhieuKham.MaPK = mapk.Text.Trim().Replace("'", "''");
                oSoPhieuKham.MaKhoa = Convert.ToString(Session["makhoa"]);
                try
                {
                    oSoPhieuKham.Ngay = Convert.ToDateTime(dmyngay);
                }
                catch
                {
                    oSoPhieuKham.Ngay = Convert.ToDateTime("1/1/1900");
                }
                oSoPhieuKham.MaThuDV = idthu.Value.Replace("'", "''").Trim();
                oSoPhieuKham.MaBA = txtMaBA.Text.Trim();
                oSoPhieuKham.MaBN = mabn.Text.Trim().Replace("'", "''");
                oSoPhieuKham.NguonBN = NguonBenhNhan();
                oSoPhieuKham.TrieuChung = trieuchung.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ChanDoanSoBo = txtChanDoanSoBo.Text.Replace("'", "''");
                oSoPhieuKham.ChanDoan = chandoan.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ICDChanDoan = icd.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ChanDoanPhu1 = chandoanphu1.Text.Trim().Replace("\'", "\'\'");
                oSoPhieuKham.ICDChanDoanPhu1 = icdphu1.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ChanDoanPhu2 = chandoanphu2.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ICDChanDoanPhu2 = icdphu2.Text.Trim().Replace("'", "''");

                if (dake == "1")
                    if (dsxutri.SelectedValue.ToString() == "0" || dsxutri.SelectedValue == "ketoa")
                        oSoPhieuKham.XuTri = "ketoa";
                    else
                        oSoPhieuKham.XuTri = dsxutri.SelectedValue.Replace("\'", "\'\'");
                else
                    oSoPhieuKham.XuTri = dsxutri.SelectedValue.Replace("\'", "\'\'");

                oSoPhieuKham.ChiDinhDieuTri = chidinhdieutri.Text.Trim().Replace("'", "''");
                oSoPhieuKham.LoiDanBS = loidanbs.Text.Trim().Replace("'", "''");
                oSoPhieuKham.HenTaiKham = taikham.Text.Trim().Replace("'", "''");
                try
                {
                    oSoPhieuKham.NgayTaiKham = Convert.ToDateTime(ngaytaikham);
                }
                catch
                {
                    oSoPhieuKham.NgayTaiKham = Convert.ToDateTime("1/1/1900");
                }
                oSoPhieuKham.MaBS = Convert.ToString(Session["mand"]);
                oSoPhieuKham.BacSiKham = tenbs.Text.Trim().Replace("'", "''");

                if (xutri == "nhapvien")
                    oSoPhieuKham.ChuyenDenKhoa = dropNhapVien.SelectedValue.ToString();
                else
                    oSoPhieuKham.ChuyenDenKhoa = "";

                string sTenBenhVien = "";
                sTenBenhVien = txtChuyenDenBV.Text.ToString();
                if (xutri == "gioithieu")
                    oSoPhieuKham.ChuyenDenBV = sTenBenhVien; //txtBV.Text;
                else
                    oSoPhieuKham.ChuyenDenBV = "";

                if (dake == "1")
                    oSoPhieuKham.DaKeToa = true;
                else
                    oSoPhieuKham.DaKeToa = false;
                oSoPhieuKham.DBName = "";
                oSoPhieuKham.KetThucKham = "";
                oSoPhieuKham.MaDotKham = temphoan.ToString();
                oSoPhieuKham.LoaiKham_CP = loaikham;
                oSoPhieuKham.MaPhieuKhamChinh = txtmapk_chinh.Text.Trim();
                #endregion

                //insert So_phieukham
                returnvalue = oSoPhieuKham.updatePhieuKham();



                //090528 Thịnh dùng n-tier để save đơn thuốc về DB, trong đó có check số lượng, danh mục bảo hiểm...
                //Việc check viết trong SP, sau này cần check gì thì thêm vài fn trong SP
                CToathuoc oToaThuoc = new CToathuoc(mapk.Text.ToString(), nDoiTuong, cnguonthuoc.Checked);

                if ((returnvalue == true) && (dsxutri.SelectedValue != "chuyenkhoa"))
                {

                    int i = Convert.ToInt32(hsodong.Value);
                    int nRowHasValue = 0;
                    try
                    {
                        #region get form values to chitiet_phieukham
                        for (int j = 1; j <= i; j++)
                        {

                            string ThuocID = "";
                            try
                            {

                                ThuocID = Request.Form.Get("ThuocID" + j.ToString()).Trim();

                                if (ThuocID != "" && ThuocID != null)
                                {
                                    nRowHasValue += 1;
                                    //oToaThuoc.TenThuoc = tenthuoc;
                                    string tenthuoc = "";

                                    try
                                    {
                                        tenthuoc = Request.Form.Get("tenthuoc" + j.ToString()).Trim();
                                    }
                                    catch { }
                                    tenthuoc = tenthuoc.Replace("\'", "\'\'");
                                    string thuocid = Request.Form.Get("ThuocID" + j.ToString());
                                    try
                                    {
                                        thuocid = thuocid.Replace("\'", "\'\'");
                                        oToaThuoc.ThuocID = Convert.ToInt32(thuocid);
                                    }
                                    catch { }

                                    string dbname = Request.Form.Get("txt_dbname" + j.ToString());
                                    try
                                    {
                                        dbname = dbname.Replace("\'", "\'\'");
                                        oToaThuoc.DBname = dbname;
                                    }
                                    catch { }

                                    string soluong = Request.Form.Get("soluong" + j.ToString());
                                    try
                                    {
                                        soluong = soluong.Replace("\'", "\'\'");
                                        if (soluong == "")
                                            soluong = "0";
                                        oToaThuoc.SoLuong = Convert.ToInt32(soluong);
                                    }
                                    catch { }
                                    string donvi = Request.Form.Get("donvi" + j.ToString());
                                    try
                                    {
                                        donvi = donvi.Replace("\'", "\'\'");
                                        if (donvi == "")
                                            donvi = "~";
                                        oToaThuoc.DonVi = donvi;
                                    }
                                    catch { }
                                    string cachdung = Request.Form.Get("cachdung" + j.ToString());
                                    try
                                    {
                                        cachdung = cachdung.Replace("\'", "\'\'");
                                        if (cachdung == "")
                                            cachdung = "~";
                                        oToaThuoc.CachDung = cachdung;
                                    }
                                    catch { }
                                    string lan = Request.Form.Get("lan" + j.ToString());
                                    try
                                    {
                                        lan = lan.Replace("\'", "\'\'");
                                        if (lan == "")
                                            lan = "0";
                                        oToaThuoc.LanDung = lan;
                                    }
                                    catch { }
                                    string sl = Request.Form.Get("sl" + j.ToString());
                                    try
                                    {
                                        sl = sl.Replace("\'", "\'\'");
                                        if (sl == "")
                                            sl = "0";
                                        oToaThuoc.LuongDung = sl;
                                    }
                                    catch { }
                                    string dv = Request.Form.Get("dv" + j.ToString());
                                    try
                                    {
                                        dv = dv.Replace("\'", "\'\'");
                                        if (dv == "")
                                            dv = "~";
                                        oToaThuoc.DonViDung = dv;
                                    }
                                    catch { }
                                    string ghichu = Request.Form.Get("ghichu" + j.ToString());
                                    try
                                    {
                                        ghichu = ghichu.Replace("\'", "\'\'");
                                        if (ghichu == "")
                                            ghichu = "~";
                                        oToaThuoc.GhiChu = ghichu;
                                    }
                                    catch { }
                                    //									string dongia=Request.Form.Get("dongia"+j.ToString());
                                    //									if(dongia.Trim()=="") dongia="0";
                                    //									try
                                    //									{
                                    //										dongia=dongia.Replace("\'","\'\'");
                                    //										
                                    //										System.Globalization.NumberFormatInfo numInfo = new System.Globalization.NumberFormatInfo();
                                    //										numInfo.NumberDecimalSeparator=".";
                                    //										numInfo.NumberDecimalDigits=4;
                                    //										double dd =  Convert.ToDouble(dongia,numInfo);
                                    //										oToaThuoc.DonGia = dd;
                                    //									}
                                    //									catch{}
                                    dal_PhieuKham.CapNhatTuDienBacSi(Session["mand"].ToString().Trim(), tenthuoc, soluong, donvi, cachdung, lan, sl, dv, ghichu, thuocid);
                                }//  END if (tenthuoc!=""&&tenthuoc!=null)

                            }

                            catch { }
                        }//end for
                        #endregion

                        //if(nRowHasValue !=0)
                        //{

                        oToaThuoc.LoaiKham = loaikham;
                        oToaThuoc.DBName_Static = "KhoBH";
                        oToaThuoc.MaPhieuKham_Cu = txtmaphieucu.Text;
                        oToaThuoc.CheckThuocBaoHiem = cnguonthuoc.Checked;

                        string msg = oToaThuoc.addNewToaThuoc();

                        if (oToaThuoc.ErrorCode != -1)
                        {
                            //Update khong xoa so phieu kham cu giong add new
                            //oSo_PhieuKham_DAL.deleteSo_PhieuKham(mapk.Text.ToString());
                            lblDrugError.Text = "<br>" + msg;
                            Factory.thongBao(ThongBao1, msg);
                            returnvalue = false;
                        }
                        else
                        {
                            returnvalue = true;
                            //ThongBao1.Text="<p style='margin-top:2px;margin-bottom:2px;background-color:royalblue'><font color=white > &nbsp;Đã lưu phiếu!</font></p>";
                            lblDrugError.Text = "";
                        }
                        //}

                    }
                    catch (Exception e)
                    {
                        Response.Write(e.Message);
                        returnvalue = false;
                    }
                    txtBV.Text = "";
                    //txtChuyenDenBV.Text="";

                }

            }
            return returnvalue;
        }

        private bool LuuPhieuKham(bool InPhieu)
        {
            if (mapk.Text.Trim() == "" || mabn.Text.Trim() == "")
            {
                return false;
            }

            int nDoiTuong = 2;
            switch (hdf_DoiTuongBN.Value)
            {
                case "BHYT":
                    nDoiTuong = 1;
                    break;
            }


            //try
            //{
            //    nDoiTuong = Convert.ToInt32(dal_BenhNhan.getLoaiBN(mabn.Text.Trim()));
            //}
            //catch
            //{
            //    nDoiTuong = 2;
            //}

            string temphoan = hiden_dotkham.Value;

            bool returnvalue = false;

            string dmyngay = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

            string sgioitinh = "";
            sgioitinh = rgioitinh.SelectedIndex.ToString();
            if (sgioitinh == "") { sgioitinh = "null"; }

            string tnamsinh = "";
            try { tnamsinh = (DateTime.Today.Year - Convert.ToInt32(tuoi.Text)).ToString(); }
            catch { }

            string ngaytaikham = "null";
            if (txtNgay.Text != "")
            {
                ngaytaikham = "" + txtNgay.Text.Trim() + " " + ((txtGio.Text != "") ? txtGio.Text : "0") + ":" + ((txtPhut.Text != "") ? txtPhut.Text : "0") + "";

            }
            String m = ngaytaikham;
            txtdake.Text = "";
            string dake = ((KiemTraDaKeToa()) ? "1" : "0");
            txtdake.Text = dake;

            if ((dsxutri.SelectedValue == "0") && (dake == "1")) { dsxutri.SelectedValue = "ketoa"; }

            string loaikham = ((txtloai_kham_CP.Text.Trim() != "") ? txtloai_kham_CP.Text.Trim() : "khamchinh");

            string xutri = dsxutri.SelectedValue;


            // kiểm tra xem đã có chưa để cập nhật hay thêm mới phiếu khám
            if (dal_PhieuKham.checkMaPhieuKhamExists(mapk.Text.Trim()))
            {
                if (hKieuLuu.Value == "capnhat")
                {
                    return CapNhatPhieuKham();
                }
            }

            string _maph = dal_PhieuKham.TaoMaPhieu("PK");
            string _mabn = mabn.Text.Trim();
            int vt = _mabn.Length - 6;
            string laymabn = _mabn.Substring(vt, 6);
            mapk.Text = _maph + laymabn;

            So_PhieuKham oSoPhieuKham = new So_PhieuKham();
            //Nếu là chuyển khoa thì gọi riêng phần chuyển khoa mà không tạo sổ phiếu khám
            if (xutri == "chuyenkhoa")
            {

                dal_VienPhi.ChuyenKhoa(drkhamchuyenkhoa.SelectedValue, Convert.ToInt32(idthu.Value));
                return false;
            }
            else
            {
                oSoPhieuKham.MaPK = mapk.Text.Trim().Replace("'", "''");
                oSoPhieuKham.MaKhoa = Convert.ToString(Session["makhoa"]);
                try
                {
                    oSoPhieuKham.Ngay = Convert.ToDateTime(dmyngay);
                }
                catch
                {
                    oSoPhieuKham.Ngay = Convert.ToDateTime("1/1/1900");
                }
                oSoPhieuKham.MaThuDV = idthu.Value.Replace("'", "''").Trim();
                oSoPhieuKham.MaBA = txtMaBA.Text.Trim();
                oSoPhieuKham.MaBN = mabn.Text.Trim().Replace("'", "''");
                oSoPhieuKham.NguonBN = NguonBenhNhan();
                oSoPhieuKham.TrieuChung = trieuchung.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ChanDoanSoBo = txtChanDoanSoBo.Text.Replace("'", "''");
                oSoPhieuKham.ChanDoan = chandoan.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ICDChanDoan = icd.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ChanDoanPhu1 = chandoanphu1.Text.Trim().Replace("\'", "\'\'");
                oSoPhieuKham.ICDChanDoanPhu1 = icdphu1.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ChanDoanPhu2 = chandoanphu2.Text.Trim().Replace("'", "''");
                oSoPhieuKham.ICDChanDoanPhu2 = icdphu2.Text.Trim().Replace("'", "''");

                if (dake == "1")
                    if (dsxutri.SelectedValue.ToString() == "0" || dsxutri.SelectedValue == "ketoa")
                        oSoPhieuKham.XuTri = "ketoa";
                    else
                        oSoPhieuKham.XuTri = dsxutri.SelectedValue.Replace("\'", "\'\'");
                else
                    oSoPhieuKham.XuTri = dsxutri.SelectedValue.Replace("\'", "\'\'");

                oSoPhieuKham.ChiDinhDieuTri = chidinhdieutri.Text.Trim().Replace("'", "''");
                oSoPhieuKham.LoiDanBS = loidanbs.Text.Trim().Replace("'", "''");
                oSoPhieuKham.HenTaiKham = taikham.Text.Trim().Replace("'", "''");
                try
                {
                    oSoPhieuKham.NgayTaiKham = Convert.ToDateTime(ngaytaikham);
                }
                catch
                {
                    oSoPhieuKham.NgayTaiKham = Convert.ToDateTime("1/1/1900");
                }
                oSoPhieuKham.MaBS = Convert.ToString(Session["mand"]);
                oSoPhieuKham.BacSiKham = tenbs.Text.Trim().Replace("'", "''");

                if (xutri == "nhapvien")
                    oSoPhieuKham.ChuyenDenKhoa = dropNhapVien.SelectedValue.ToString();
                else
                    oSoPhieuKham.ChuyenDenKhoa = "";

                string sTenBenhVien = "";
                sTenBenhVien = txtChuyenDenBV.Text.ToString();
                if (xutri == "gioithieu")
                    oSoPhieuKham.ChuyenDenBV = sTenBenhVien; //txtBV.Text;
                else
                    oSoPhieuKham.ChuyenDenBV = "";

                if (dake == "1")
                    oSoPhieuKham.DaKeToa = true;
                else
                    oSoPhieuKham.DaKeToa = false;
                oSoPhieuKham.DBName = "";
                oSoPhieuKham.KetThucKham = "";
                oSoPhieuKham.MaDotKham = temphoan.ToString();
                oSoPhieuKham.LoaiKham_CP = loaikham;
                oSoPhieuKham.MaPhieuKhamChinh = txtmapk_chinh.Text.Trim();


                //insert So_phieukham
                returnvalue = oSoPhieuKham.addPhieuKham();
                //Việc check viết trong SP, sau này cần check gì thì thêm vài fn trong SP
                //BLL.CToathuoc oToaThuoc = new ToaThuoc.BLL.CToathuoc(mapk.Text.ToString(), nDoiTuong, cnguonthuoc.Checked);
                CToathuoc oToaThuoc = new CToathuoc(mapk.Text.ToString(), nDoiTuong, cnguonthuoc.Checked);
                if ((returnvalue == true) && (dsxutri.SelectedValue != "chuyenkhoa"))
                {

                    int i = Convert.ToInt32(hsodong.Value);
                    int nRowHasValue = 0;
                    try
                    {
                        #region get form values to chitiet_phieukham
                        for (int j = 1; j <= i; j++)
                        {
                            string ThuocID = "";
                            try
                            {
                                ThuocID = Request.Form.Get("hdfIDThuoc_" + j.ToString()).Trim();

                                if (ThuocID != "" && ThuocID != null)
                                {
                                    nRowHasValue += 1;
                                    //oToaThuoc.TenThuoc = tenthuoc;

                                    string thuocid = Request.Form.Get("hdfIDThuoc_" + j.ToString());
                                    try
                                    {
                                        thuocid = thuocid.Replace("\'", "\'\'");
                                        oToaThuoc.ThuocID = Convert.ToInt32(thuocid);
                                    }
                                    catch { }
                                    string tenthuoc = "";
                                    try
                                    {
                                        tenthuoc = Request.Form.Get("txtTenThuoc_" + j.ToString()).Trim();
                                    }
                                    catch { }
                                    tenthuoc = tenthuoc.Replace("\'", "\'\'");
                                    string dbname = Request.Form.Get("txt_dbname" + j.ToString());
                                    try
                                    {
                                        dbname = dbname.Replace("\'", "\'\'");
                                        oToaThuoc.DBname = dbname;
                                    }
                                    catch { }

                                    string soluong = Request.Form.Get("txtSoLuong_" + j.ToString());
                                    try
                                    {
                                        soluong = soluong.Replace("\'", "\'\'");
                                        if (soluong == "")
                                            soluong = "0";
                                        oToaThuoc.SoLuong = Convert.ToInt32(soluong);
                                    }
                                    catch { }
                                    string donvi = Request.Form.Get("txtDonVi_" + j.ToString());
                                    try
                                    {
                                        donvi = donvi.Replace("\'", "\'\'");
                                        if (donvi == "")
                                            donvi = "~";
                                        oToaThuoc.DonVi = donvi;
                                    }
                                    catch { }
                                    string cachdung = Request.Form.Get("txtCachDung_" + j.ToString());
                                    try
                                    {
                                        cachdung = cachdung.Replace("\'", "\'\'");
                                        if (cachdung == "")
                                            cachdung = "~";
                                        oToaThuoc.CachDung = cachdung;
                                    }
                                    catch { }
                                    string lan = Request.Form.Get("txtLanDung" + j.ToString());
                                    try
                                    {
                                        lan = lan.Replace("\'", "\'\'");
                                        if (lan == "")
                                            lan = "0";
                                        oToaThuoc.LanDung = lan;
                                    }
                                    catch { }
                                    string sl = Request.Form.Get("txtLuongDung_" + j.ToString());
                                    try
                                    {
                                        sl = sl.Replace("\'", "\'\'");
                                        if (sl == "")
                                            sl = "0";
                                        oToaThuoc.LuongDung = sl;
                                    }
                                    catch { }
                                    string dv = Request.Form.Get("txtDonViDung_" + j.ToString());
                                    try
                                    {
                                        dv = dv.Replace("\'", "\'\'");
                                        if (dv == "")
                                            dv = "~";
                                        oToaThuoc.DonViDung = dv;
                                    }
                                    catch { }
                                    string ghichu = Request.Form.Get("txtGhiChu_" + j.ToString());
                                    try
                                    {
                                        ghichu = ghichu.Replace("\'", "\'\'");
                                        if (ghichu == "")
                                            ghichu = "~";
                                        oToaThuoc.GhiChu = ghichu;
                                    }
                                    catch { }
                                    //									string dongia=Request.Form.Get("dongia"+j.ToString());
                                    //									if(dongia.Trim()=="") dongia="0";
                                    //									try
                                    //									{
                                    //										dongia=dongia.Replace("\'","\'\'");
                                    //										
                                    //										System.Globalization.NumberFormatInfo numInfo = new System.Globalization.NumberFormatInfo();
                                    //										numInfo.NumberDecimalSeparator=".";
                                    //										numInfo.NumberDecimalDigits=4;
                                    //										double dd =  Convert.ToDouble(dongia,numInfo);
                                    //										oToaThuoc.DonGia = dd;
                                    //									}
                                    //									catch{}
                                    dal_PhieuKham.CapNhatTuDienBacSi(Session["mand"].ToString().Trim(), tenthuoc, soluong, donvi, cachdung, lan, sl, dv, ghichu, thuocid);
                                }//  END if (tenthuoc!=""&&tenthuoc!=null)

                            }

                            catch { }
                        }//end for
                        #endregion

                        if (nRowHasValue != 0)
                        {
                            oToaThuoc.LoaiKham = loaikham;
                            oToaThuoc.DBName_Static = "KhoBH";
                            oToaThuoc.MaPhieuKham_Cu = txtmaphieucu.Text;
                            oToaThuoc.CheckThuocBaoHiem = cnguonthuoc.Checked;

                            string msg = oToaThuoc.addNewToaThuoc();
                            if (oToaThuoc.ErrorCode != -1)
                            {
                                dal_PhieuKham.deleteSo_PhieuKham(mapk.Text.ToString());
                                dal_PhieuKham.CapNhatDanhSachChoKham(hiden_dotkham.Value, Session["makhoa"].ToString().Trim());
                                lblDrugError.Text = "<br>" + msg;
                                Factory.thongBao(ThongBao1, msg);
                                returnvalue = false;
                            }
                            else
                            {
                                returnvalue = true;
                                //ThongBao1.Text="<p style='margin-top:2px;margin-bottom:2px;background-color:royalblue'><font color=white > &nbsp;Đã lưu phiếu!</font></p>";
                                lblDrugError.Text = "";
                            }
                        }

                    }
                    catch (Exception e)
                    {
                        Response.Write(e.Message);
                        returnvalue = false;
                    }
                    txtBV.Text = "";
                    //txtChuyenDenBV.Text="";

                }

            }
            return returnvalue;
        }

        //private void LuuThongTinBenhNhan()
        //{ 
        //    string MaBN = dal_BenhNhan.TaoMaBenhNhan("MaBN");
        //    mabn.Text = MaBN;
        //    dal_BenhNhan.LuuThongTinBenhNhanPhongKham(MaBN, tenbn.Text, rgioitinh.SelectedValue, diachi.Text, int.Parse(tuoi.Text));        
        //}

        //private void LuuDuLieu(bool InPhieu)
        //{
        //    Luu(InPhieu);
        //    txtluu.Text = "";
        //    if (txtdake.Text == "1") { txtktckhoa.Text = "2"; }
        //    else { txtktckhoa.Text = "1"; }
        //    mapk.ReadOnly = true;
        //    mabn.ReadOnly = true;
        //    try
        //    {
        //        DataTable dt = dal_VienPhi.LayThongTinDongChiTra(mabn.Text, hiden_dotkham.Value);
        //        //Response.Write("<script language=javascript>alert('cai nay co gia tri ! dung nen insert them !')</script>");
        //        if (dt.Rows.Count <= 0)
        //        {
        //            dal_VienPhi.ThemDongChiTra(mabn.Text.Trim(), DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss"), hiden_dotkham.Value);
        //        }
        //    }
        //    catch (Exception exp)
        //    {
        //        Response.Write("<script language='javascript' type='text/javascript'>alert('chua dc !!!!!!!')</script>");
        //    }
        //}

        //private void Luu(bool InPhieu)
        //{
        //    bool daluu = false;
        //    if (hbnmoi.Value == "true")
        //    {
        //        LuuThongTinBenhNhan();
        //        dal_PhieuKham.TangSoMaPhieu();
        //    }
        //    if (hKieuLuu.Value == "moi")
        //    {
        //        daluu = LuuPhieuKham(InPhieu);
        //        if (daluu)
        //        {
        //            dal_PhieuKham.TangSoMaPhieu();
        //            dal_VienPhi.DanhDauDichVuDaKham(idthu.Value);
        //            if (dsxutri.SelectedValue == "chuyenkhoa")
        //            {
        //                inphieuChuyenkhoa();
        //                //Response.Redirect("dsbenhnhancho.aspx");
        //            }
        //        }
        //    }
        //    else if (hKieuLuu.Value == "capnhat")
        //    {
        //        daluu = CapNhatPhieuKham();
        //        dal_VienPhi.DanhDauDichVuDaKham(idthu.Value);
        //        //KTketthuc_madotkham();
        //        //taomaYTe();
        //    }
        //    if (InPhieu == true && daluu == true) { inphieu(); }
        //    if (dsxutri.SelectedValue == "chuyenkhoa")
        //    {
        //        inphieuChuyenkhoa();
        //    }
        //    if (daluu == true)
        //    {
        //        hKieuLuu.Value = "capnhat";
        //        if (dsxutri.SelectedValue == "chuyenkhoa")
        //        {
        //            inphieuChuyenkhoa();
        //            //Response.Redirect("dsbenhnhancho.aspx");
        //        }
        //    }
        //}

        #endregion

        #region Event handler

        protected void btnLuuKhongXoaDSCho_Click(object sender, System.EventArgs e)
        {
            LuuKhongXoaDSCho(false);
        }

        //protected void btnLuu_Click(object sender, EventArgs e)
        //{
        //    Luu(false);
        //    LuuPhieuKham(false);
        //}

        //protected void btnLuuVaIn_Click(object sender, EventArgs e)
        //{
        //    Luu(true);
        //}

        #endregion
    }
}